from django.shortcuts import render

# Create your views here.
from django.views import View
from libs.captcha.captcha import captcha
from django_redis import get_redis_connection
from django.http import HttpResponse, JsonResponse
from random import randint
from libs.yuntongxun.sms import CCP

class ImageCodeView(View):
    def get(self,request,uuid):
 #1.获取uuid 2.生成图片验证码 3.保存图片验证码字符（连redis,保存数据）
 # 4.返回响应(图片二进制数据）

        text,image=captcha.generate_captcha()


        redis_cli = get_redis_connection('code')

        redis_cli.setex(uuid,300,text)

        return HttpResponse(image,content_type='image/jpeg')

class SmsCodeView(View):
    def get(self,request,mobile):



    #短信验证：1.接收请求获取参数 2.验证参数
    #3图片验证（连redis 获取uuid 读取redis图片验证码，对比删除比对过的图片验证码）
    #4.生成短信 5.保存短信 6.发送短信 7返回响应
        user_text=request.GET.get('image_code')
        uuid=request.GET.get('image_code_id')
        if not all([uuid,user_text]):
            return JsonResponse({'code':400,'errmsg':'参数错误'})

        redis_cli=get_redis_connection('code')
        redis_text=redis_cli.get(uuid)
        if redis_text is None:
            return JsonResponse({'code': 400, 'errmsg': '验证码过期'})
        redis_cli.delete(uuid)
        #防止频繁发短信
        send_flag=redis_cli.get('send_flag_%s'%mobile)
        if send_flag is not None:
            return JsonResponse({'code':400,'errmsg':'禁止频繁操作'})


        sms_code='%06d'%randint(0,999999)

        pipeline=redis_cli.pipeline()
        pipeline.setex(mobile,300,sms_code)

        CCP().send_template_sms(mobile,[sms_code,5],1)

        #频繁发送短信信号在发送短信后生成
        pipeline.setex('send_flag_%s'%mobile,120,1)
        pipeline.execute()
        return JsonResponse({'code': 400, 'errmsg':'done'})











